package com.stellar.circle.controller.admin.sPost.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.stellar.core.util.DateFormatConstants;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;


/**
 * 校园墙帖子表基础视图对象
 *
 * @author Jqchan
 * @since 2025-05-17
 */
@Data
public class SPostBaseVO implements Serializable {
    private static final long serialVersionUID = 298813539677130982L;

    /**
     * 帖子ID，主键
     * (数据库字段: id)
     */
    private Long id;

    /**
     * 发布用户ID（关联user表id，匿名时也需记录）
     * (数据库字段: user_id)
     */
    private Long userId;

    /**
     * 学校ID（关联school表id）
     * (数据库字段: school_id)
     */
    private Long schoolId;

    /**
     * 分类ID（关联s_post_category表id）
     * (数据库字段: category_id)
     */
    private Long categoryId;

    /**
     * 帖子标题
     * (数据库字段: title)
     */
    private String title;

    /**
     * 帖子内容
     * (数据库字段: content)
     */
    private String content;

    /**
     * 图片列表（JSON数组格式存储URL）
     * (数据库字段: images)
     */
    private String images;

    /**
     * 是否匿名：0-实名/1-匿名
     * (数据库字段: is_anonymous)
     */
    private Integer isAnonymous;

    /**
     * 帖子状态：published-已发布/pending-审核中/hidden-隐藏
     * (数据库字段: post_status)
     */
    private String postStatus;

    /**
     * 浏览数
     * (数据库字段: view_count)
     */
    private Integer viewCount;

    /**
     * 点赞数
     * (数据库字段: like_count)
     */
    private Integer likeCount;

    /**
     * 评论数
     * (数据库字段: comment_count)
     */
    private Integer commentCount;

    /**
     * 是否置顶：0-否/1-是
     * (数据库字段: is_pinned)
     */
    private Integer isPinned;

    /**
     * 置顶过期时间
     * (数据库字段: pin_expire_time)
     */
    @DateTimeFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS)
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date pinExpireTime;

    /**
     * 创建时间
     * (数据库字段: create_time)
     */
    @JsonFormat(pattern = DateFormatConstants.DATETIME_FORMAT_YYYY_MM_DD_HH_MM_SS, timezone = DateFormatConstants.TIME_ZONE_GMT_PLUS_8)
    private Date createTime;

    /**
     * 创建人
     * (数据库字段: create_by)
     */
    private String createBy;

    /**
     * 修改时间
     * (数据库字段: update_time)
     */
    private Date updateTime;

    /**
     * 修改人
     * (数据库字段: update_by)
     */
    private String updateBy;

    /**
     * 是否删除：1-删除/0-未删除
     * (数据库字段: is_deleted)
     */
    private Integer isDeleted;

}
